from django.db import models
from system.models import CommonInfo
from user.models import User

# Create your models here.
# 打卡记录
class AttendanceLog(CommonInfo):
    # 关联用户表id，外键
    user_id = models.ForeignKey(verbose_name='用户id', to=User, on_delete=models.CASCADE, db_comment='关联用户表id，外键')
    # 打卡类型编码
    check_type_id = models.CharField(verbose_name='打卡类型编码', max_length=20, db_comment='打卡类型')
    # 打卡类型（上班、下班等）
    check_type = models.CharField(verbose_name='打卡类型', max_length=200, db_comment='打卡类型')
    # 规定时间（上班、下班等）
    stipulated_time = models.DateTimeField(verbose_name='规定时间', null=True, blank=True, db_comment='规定时间')
    # 打卡时间（插入数据库时自动生成）
    check_time = models.DateTimeField(verbose_name='打卡时间', auto_now_add=True, db_comment='打卡时间')
    # 打卡状态编码
    check_status_id = models.CharField(verbose_name='打卡状态编码', max_length=20, db_comment='打卡状态编码')
    # 打卡状态（正常、迟到、早退等）
    check_status = models.CharField(verbose_name='打卡状态', max_length=200, db_comment='打卡状态')
    # 打卡时间与规定时间的差值（单位：秒）
    delta_time = models.IntegerField(verbose_name='打卡时间与规定时间的差值', null=True, blank=True, db_comment='打卡时间与规定时间的差值')
    # 打卡地点
    check_location = models.CharField(verbose_name='打卡地点', max_length=200, db_comment='打卡地点')
    # 打卡坐标x
    pos_x = models.FloatField(verbose_name='打卡坐标x', null=True, blank=True, db_comment='打卡坐标x')
    # 打卡坐标y
    pos_y = models.FloatField(verbose_name='打卡坐标y', null=True, blank=True, db_comment='打卡坐标y')
    # 坐标系
    coordinate_system = models.CharField(verbose_name='坐标系', max_length=20, null=True, blank=True, db_comment='坐标系')
    # 备注
    remark = models.CharField(verbose_name='备注', max_length=200, null=True, blank=True, db_comment='备注')
    # 数据采用标记（0：不采用，1：已采用）（注意，每个打卡类型只能采用一个打卡记录，上班卡采用最早的记录，下班卡采用最晚的记录）
    be_adopted = models.IntegerField(verbose_name='数据采用标记', choices=((0, '未采用'), (1, '已采用')), default=0, db_comment='数据采用标记（0：不采用，1：已采用）')
    
    class Meta:
        db_table = 'attendance_log'
        verbose_name = '打卡记录'
        verbose_name_plural = verbose_name